

#一、 Python里一切皆是对象，函数也可以当做一个对象来使用
def func1():
    print("这是一个函数")

print(type(func1)) #打印：<class 'function'>

 
#二、函数中的函数：闭包
#闭包：函数+环境变量(如下例中的func_in和a)
def func_out():
    a = 10
    def func_in(x):
        result = a*x + 100
        print("func_in的计算结果是：" + str(result))
    return func_in

a = 20    
f = func_out()
f(2)   #打印出120而不是140
#说明：func_in与a构成了一个闭包，通过func_out()返回的f得到的是带有环境变量的闭包；
# 即使a在外界改变了，但是依然不会改变f的闭包环境

#测试闭包的中的内容
#1.打印闭包的环境变量
print(f.__closure__)
#打印：(<cell at 0x108ef71f8: int object at 0x108b7fba0>,)

#2.打印闭包的环境变量的值
print(f.__closure__[0].cell_contents)
#打印：10



